

#include "bibliotecas.h"


#ifndef SNIFFER_H
#define	SNIFFER_H

#define TEMPO_ESPERA 1

/*
 * Função que captura e retorna as
 * interfaces e redes disponiveis no sistema
 */
char *capturaInterfaces(void);

/*
 * Função que inicializa captura de pacotes, captura interface
 * de rede e depois aplica a regra definida em filtro.
 * interface Interface de rede que será utilizada para filtragem.
 * filtro Especificação da regra de filtragem.
 * msg Mensagem de erro caso ocorra.
 * retorna um descritor de socket libpcap.
 */
pcap_t* inicializaCapturaPacotes(char *interface, const char *filtro, char *msg);

/*
 * Função que realiza captura de pacotes e envia ao cliente.
 * pd Descritor de socket libpcap.
 * quant Quantidade de pacotes a ser capturados.
 * socket Descritor socket de conexão com o cliente.
 */
void capture_loop(pcap_t* pd, int quant, int socket);

/*
 * Extrai cabeçalho dos pacotes e retorna em msg.
 */
void cache_ip_header(const u_char *buffer, char *msg);

/*
 * Extrai dados dos pacotes tcp e retorna em msg
 */
void cache_tcp_packet(const u_char *buffer, char *msg);

/*
 * Extrai dados dos pacotes udp e retorna em msg
 */
void cache_udp_packet(const u_char *buffer, char *msg);


/*
 * Extrai dados dos pacotes icmp e retorna em msg
 */
void cache_icmp_packet(const u_char *buffer, char *msg);



#endif	/* SNIFFER_H */

